<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
    <script>
        let arr = [1,2,3,4,5]
        // for (let i = 0; i < arr.length; i++) {
        //     console.log(arr[i])
        // }
        
        // es6里专门提供的遍历数组的方法，v就是数组中每个元素
        // forEach是没有返回值的，他仅仅只是为了用来做遍历
        // const res1 = arr.forEach( v => {
        //     console.log(v)
        // } )
        // console.log(res1)


        // map：这个方法也有遍历的效果，但是跟forEach最大的不同在于，他有返回值
        // 他的返回值是一个新数组，而且新数组的长度一定跟原数组一样
        // 你在遍历中返回什么，他每个元素就是什么
        // 例如第一次返回a，第二次返回b，第三次返回c，..... 那么数组就会是 [a,b,c,d,e]
        // 作用：对原数组每一项做处理，返回一个新的长度一样的数组
        // const res2 = arr.map(v => {
        //     console.log(v)
        //     return v * 10
        // })
        // console.log(res2) // 10, 20, 30, 40, 50
        // console.log(arr) // 1, 2, 3, 4, 5

        // // 应用场景：例如提取出每个人的id
        // const list = [
        //     { id: 1, name: 'jack', age: 16 },
        //     { id: 2, name: 'jack2', age: 16 },
        //     { id: 3, name: 'jack3', age: 16 },
        //     { id: 4, name: 'jack4', age: 16 },
        // ]
        // // 我需要拿到所有人的id，组成一个新的数组
        // // 这时候可以用map，因为我要拿到所有人id就要遍历整个数组
        // // id的个数应该跟原数组要一样，所以肯定用map
        // const res3 = list.map(v => v.id) // 返回每一项id作为新数组的每个元素
        // console.log(res3) // 只有id了

        // filter
        // 他也有遍历的作用，也有返回值。返回一个新的数组。跟map的区别在于。
        // map会生成一个跟原数组长度一样的数组，而filter可能长度不一样
        // 如果当前循环中return了true就代表把当前这个元素返回到新数组，如果return false就不会把当前选择放到新数组
        // const res4 = arr.filter(v => {
        //     console.log(v)
        //     if (v >= 3)
        //         return true
        // })
        // const res4 = arr.filter(v => v >= 3)
        // console.log(res4)

        // 作用：可以对数组进行过滤，或者说进行筛选
        // 例如：有一堆数组保存了某个班学生的情况
        // 现在需要找到班级里成绩在90以上所有的同学
        // const list = [
        //     { name: '张三', sex:'男',score: 99 },
        //     { name: '张四', sex:'女',score: 64 },
        //     { name: '张五', sex:'男',score: 90 },
        //     { name: '张六', sex:'女',score: 79 },
        // ]
        // const res5 = list.filter( v => v.score >= 90 )
        // console.log(res5)


        // every和some,reduce也常用
    </script>
</body>
</html>